If MAP(BX/16,(BY-8)/16)>106 and MAP(BX/16,(BY-8)/16)<121 : LOSELIFE : End If
If YSPEED<0
If SLEEP=0 : FRAME=34+FRAMECOUNT : End If
If MAP(BX/16,(BY-2)/16)<61 and MAP((BX+15)/16,(BY-2)/16)<61
BY=BY+YSPEED
Inc JCOUNT : If JCOUNT=3 : JCOUNT=0 : Inc YSPEED : End If
Else
YSPEED=-YSPEED
Inc BOUNCE
UP=0
End If
End If
If YSPEED=0
If MAP(BX/16,(BY+16)/16)<61 or MAP((BX+15)/16,(BY+16)/16)<61
Inc BOUNCE : UP=0
End If
End If
'
' !!!!!GOING DOWN!!!!!
'
Else
Do
If MAP(BX/16,(BY+16)/16)>60 or MAP((BX+15)/16,(BY+16)/16)>60
If BOUNCE<0 : YSPEED=BOUNCE : Else YSPEED=-2 : End If
UP=1 : Exit
End If
If SLEEP=0 : FRAME=30+FRAMECOUNT : End If
If BOUNCE=0 and Fire(1) : YSPEED=2 : BOUNCE=-3 : End If
BY=BY+YSPEED
Inc JCOUNT : If JCOUNT=3 : JCOUNT=0 : If YSPEED<8 : Inc YSPEED : End If : End If
Exit
Loop
If(MAP((BX)/16,(BY+16)/16)=182 and MAP((BX+15)/16,(BY+16)/16)=182) and YSPEED=0 : Sam Play 4,3 : YSPEED=-8 : B=1 : BOUNCE=YSPEED : End If
If(MAP((BX)/16,(BY+16)/16)=181 or MAP((BX+15)/16,(BY+16)/16)=181) and YSPEED=0 : Sam Play 4,3 : YSPEED=-8 : BOUNCE=YSPEED : End If
End If
If Jleft(1)
GTOS=0
SLEEP=0
If MAP((BX-2)/16,BY/16)>106 and MAP((BX-2)/16,BY/16)<121 : LOSELIFE : End If
If XIT=1 and MAP((BX-2)/16,BY/16)=161 : EOL=1 : End If
If MAP((BX-2)/16,BY/16)=2 : PICKUPSLEFT : End If
If SLEEP=0 : FRAME=38+FRAMECOUNT : End If
If MAP((BX-2)/16,BY/16)<61 : BX=BX-2 : End If
End If
If Jright(1)
GTOS=0
SLEEP=0
If XIT=1 and MAP((BX+17)/16,BY/16)=161 : EOL=1 : End If
If MAP((BX+17)/16,BY/16)>106 and MAP((BX+17)/16,BY/16)<121 : LOSELIFE : End If
If MAP((BX+17)/16,BY/16)=2 : PICKUPSRIGHT : End If
If SLEEP=0 : FRAME=42+FRAMECOUNT : End If
If MAP((BX+17)/16,BY/16)<61 : BX=BX+2 : End If
End If
If MAP(BX/16,(BY+16)/16)=141
BLOCKCOUNT=5
BLOCKX=BX/16 : BLOCKX=BLOCKX*16 : Rem DISAPEARING BLOCKS
BLOCKY=(BY+16)/16 : BLOCKY=BLOCKY*16
End If
If MAP((BX+8)/16,(BY+16)/16)>106 and MAP((BX+8)/16,(BY+16)/16)<115 : LOSELIFE : End If
If MAP((BX+8)/16,(BY-2)/16)>106 and MAP((BX+8)/16,(BY-2)/16)<115 : LOSELIFE : End If
If BLOCKCOUNT>1 : Dec BLOCKCOUNT : End If
If BLOCKCOUNT=1
Sam Play 4,4
Put Block 21,BLOCKX,BLOCKY
MAP(BLOCKX/16,BLOCKY/16)=21
BLOCKCOUNT=0
End If
If Key State(69) : DEAD=1 : End If
If SCORE=1000 and NEWLIFE=0 : Inc LIVES : NEWLIFE=1 : End If
If MAP(BX/16,(BY+16)/16)=182 and MAP((BX+15)/16,(BY+16)/16)=182 : Sam Play 4,3 : B=1 : If BOUNCE>-12 : Dec BOUNCE : End If : End If : Rem lands on trampoline
If MAP(BX/16,(BY+16)/16)=181 or MAP((BX+15)/16,(BY+16)/16)=181 : Sam Play 4,3 : If BOUNCE>-12 : Dec BOUNCE : End If : End If : Rem lands on trampoline
If MAP(BX/16,(BY+16)/16)=2 : PICKUPSDOWN : End If
If MAP(BX/16,(BY-2)/16)=2 : PICKUPUP : End If
If MAP((BX+8)/16,(BY+16)/16)>182 and MAP((BX+8)/16,(BY+16)/16)<186 : OPENDOOR : End If
If MAP(BX/16,(BY+16)/16)>106 and MAP(BX/16,(BY+16)/16)<115 : LOSELIFE : End If
SPRING
If XIT=0 and APPLES=0
XIT=1
End If
If XIT=1 : Bob 1,XX*16,XY*16,XITFRAME : End If
Inc XITFRAME : If XITFRAME=67 : XITFRAME=61 : End If
If XIT=1 and MAP(BX/16,(BY+8)/16)=161 : LEAVE : EOL=1 : End If
SY=BY-120
If SY<0 : SY=0 : End If
If SY>512 : SY=512 : End If
If DEAD=1 : Sam Play 4,1 : End If
Inc FCOUNT
If FCOUNT=4 : Inc FRAMECOUNT : FCOUNT=0 : End If
If FRAMECOUNT=4 : FRAMECOUNT=0 : End If
If SLEEP=0 : Inc GTOS : End If
If GTOS=240 : SLEEP=1 : GTOS=0 : FRAME=51 : End If
If SLEEP=1 : Inc SCOUNT : End If
If SCOUNT=5 : Inc FRAME : SCOUNT=0 : End If
If FRAME=61 : FRAME=57 : End If
If TENFRAME>0 : Inc TENCOUNT : End If
If TENCOUNT=2 : Inc TENFRAME : TENCOUNT=0 : End If
If TENFRAME=71 : TENFRAME=0 : Bob Off : End If
End Proc
Procedure GREADY
Screen Offset 2,0,SY
Screen Offset 1,0,SY/2
X1=448 : X2=488
Repeat
Sprite 8,X1,160,17 : If X1>288 : Add X1,-4 : End If
Sprite 9,X2,180,18 : Add X2,-4
Wait Vbl
Until X2<288
Sprite 10,295,200,LEVEL+5
For LC=1 To 50 : Wait Vbl : Next LC
Sprite Off 10
Repeat
Sprite 8,X1,160,17 : Add X1,-8
Wait Vbl
Until X1<248
Repeat
Sprite 8,X1,160,17 : Add X1,-8
Sprite 9,X2,180,18 : Add X2,-8
Wait Vbl
Until X2<128
Sprite Off
End Proc
Procedure LOSELIFE
Sam Play 4,2
For LC=19 To 29
Sprite 6,BX+128,BY+44-SY,LC
If LC<23 : Wait 2 : End If
Wait 3
Wait Vbl
Next LC
BX=288
BY=600
FRAME=2
SY=512
BOUNCE=-6
HEIGHT=0
UP=0
YSPEED=0
Dec LIVES
If LIVES=0 : DEAD=1 : End If
End Proc
Procedure LEAVE
L=0
For LC=46 To 50
Sprite 6,BX+128,BY+44-SY,LC
Wait 8
If LC=50 and L=0 : LC=46 : L=1 : End If
Next LC
End Proc
Procedure PICKUPSDOWN
Sam Play 4,6
Y=(BY+16)/16
Y=Y*16
X=BX/16
X=X*16
SCORE=SCORE+10
Put Block 1,X,Y
MAP(BX/16,(BY+16)/16)=1
Dec APPLES
CALCSCORE
TEN
End Proc
Procedure SPRING
If B=0 : Pop Proc : End If
If B=1
BAY=(BY+16)/16
BAY=BAY*16
BAX=BX/16
BAX=BAX*16
End If
If B<6
Put Block B+200,BAX,BAY
Inc B
Else B=0 : End If
End Proc
Procedure PICKUPUP
Sam Play 4,6
Y=(BY-2)/16
Y=Y*16
X=BX/16
X=X*16
SCORE=SCORE+10
Put Block 1,X,Y
MAP(BX/16,(BY-2)/16)=1
Dec APPLES
CALCSCORE
TEN
End Proc
Procedure PICKUPSLEFT
Sam Play 4,6
X=(BX-2)/16
X=X*16
Y=BY/16
Y=Y*16
SCORE=SCORE+10
Put Block 1,X,Y
MAP((BX-2)/16,BY/16)=1
Dec APPLES
CALCSCORE
TEN
End Proc
Procedure PICKUPSRIGHT
Sam Play 4,6
X=(BX+17)/16
X=X*16
Y=BY/16
Y=Y*16
SCORE=SCORE+10
Put Block 1,X,Y
MAP((BX+17)/16,BY/16)=1
Dec APPLES
CALCSCORE
TEN
End Proc
Procedure OPENDOOR
Sam Play 4,5
On(MAP(BX/16,(BY+16)/16))-182 Gosub A,B,C,D
Pop Proc
A:
X=BX/16
X=X*16
Y=(BY+16)/16
Y=Y*16
Put Block MAP(BX/16,(BY+16)/16)-142,X,Y
Put Block 21,LAZERX(1)*16,LAZERY(1)*16
MAP(LAZERX(1),LAZERY(1))=1
MAP(LAZERX(1),LAZERY(1)+1)=1
MAP(LAZERX(1),LAZERY(1)-1)=1
Return
B:
X=BX/16
X=X*16
Y=(BY+16)/16
Y=Y*16
Put Block MAP(BX/16,(BY+16)/16)-142,X,Y
Put Block 1,LAZERX(2)*16,LAZERY(2)*16
MAP(LAZERX(2),LAZERY(2))=1
MAP(LAZERX(2),LAZERY(2)+1)=1
MAP(LAZERX(2),LAZERY(2)-1)=1
Return
C:
X=BX/16
X=X*16
Y=(BY+16)/16
Y=Y*16
Put Block MAP(BX/16,(BY+16)/16)-142,X,Y
Put Block 1,LAZERX(3)*16,LAZERY(3)*16
MAP(LAZERX(3),LAZERY(3))=1
MAP(LAZERX(3),LAZERY(3)+1)=1
MAP(LAZERX(3),LAZERY(3)-1)=1
Return
D:
X=BX/16
X=X*16
Y=(BY+16)/16
Y=Y*16
Put Block MAP(BX/16,(BY+16)/16)-142,X,Y
Put Block 1,LAZERX(4)*16,LAZERY(4)*16
MAP(LAZERX(4),LAZERY(4))=1
MAP(LAZERX(4),LAZERY(4)+1)=1
MAP(LAZERX(4),LAZERY(4)-1)=1
Return
End Proc
Procedure CALCTIME
If TIMEFRAME(2)>-1 : Dec TIMEFRAME(2) : End If
If TIMEFRAME(2)=-1 : TIMEFRAME(2)=9 : Dec TIMEFRAME(1) : End If
If TIMEFRAME(2)=0 and TIMEFRAME(1)=0 : DEAD=1 : End If
End Proc
Procedure CALCSCORE
NEWLIFE=0
If SCOREFRAME(2)=9 and SCOREFRAME(3)=9 : Inc SCOREFRAME(1) : SCOREFRAME(2)=0 : SCOREFRAME(3)=0 : End If
If SCOREFRAME(3)<10 : Inc SCOREFRAME(3) : End If
If SCOREFRAME(3)=10 and SCOREFRAME(2)<9 : Inc SCOREFRAME(2) : SCOREFRAME(3)=0 : End If
If SCOREFRAME(1)=9 and SCOREFRAME(2)=9 and SCOREFRAME(3)=9